<ui:composition xmlns="http://www.w3.org/1999/xhtml"
                xmlns:ui="http://java.sun.com/jsf/facelets"
                xmlns:h="http://java.sun.com/jsf/html"
                xmlns:f="http://java.sun.com/jsf/core"
                xmlns:p="http://primefaces.org/ui"
                template="/templates/plantilla1.xhtml">

    <ui:define name="contenido">

        <h:form id="formListUsuarios">

            <p:outputPanel id="filtroPanel">
                <h3>Filtros Busqueda</h3>
                <table>
                    <tr>
                        <th>Rut</th>
                        <td>
                            <p:inputText id="rut" value="#{gestionarUsuariosBean.rut}" styleClass="validaRut">
                                <f:converter converterId="rutConverter" />
                            </p:inputText>
                        </td>
                        <td><p:message for="rut" /></td>
                    </tr>
                    <tr>
                        <th>Nombre</th>
                        <td>
                            <p:inputText id="nombre" value="#{gestionarUsuariosBean.nombres}" />
                        </td>
                        <td><p:message for="nombre" /></td>
                    </tr>
                    <tr>
                        <th>Apellidos</th>
                        <td>
                            <p:inputText id="apellidos" value="#{gestionarUsuariosBean.apellidos}" />
                        </td>
                        <td><p:message for="apellidos" /></td>
                    </tr>
                    <tr>
                        <th>Email</th>
                        <td>
                            <p:inputText id="email" value="#{gestionarUsuariosBean.email}" />
                        </td>
                        <td><p:message for="email" /></td>
                    </tr>
                    <tr>
                        <th>Perfil</th>
                        <td>
                            <p:selectOneMenu id="perfil" 
                                             value="#{gestionarUsuariosBean.perfil}"
                                             converter="jsonConverter">
                                <f:selectItem itemLabel=" " />
                                <f:selectItems value="#{gestionarUsuariosBean.perfilList}" 
                                               var="p" itemLabel="#{p.nombre}" itemValue="#{p}" />
                            </p:selectOneMenu>
                        </td>
                        <td><p:message for="perfil" /></td>
                    </tr>
                    <tr>
                        <th>Habilitado</th>
                        <td>
                            <p:selectOneMenu id="habilitado" 
                                             value="#{gestionarUsuariosBean.habilitado}">
                                <f:selectItem itemLabel="" />
                                <f:selectItem itemLabel="Sí" itemValue="#{true}" />
                                <f:selectItem itemLabel="No" itemValue="#{false}" />
                            </p:selectOneMenu>
                        </td>
                        <td><p:message for="habilitado" /></td>
                    </tr>
                    <tr>
                        <th>Fecha nacimiento minima</th>
                        <td>
                            <p:calendar id="fechaMinima" value="#{gestionarUsuariosBean.fechaNacimientoInferior}" 
                                    locale="es" navigator="true" pattern="dd/MM/yyyy" yearRange="-100:+0" showOn="button" />
                        </td>
                        <td><p:message for="fechaMinima" /></td>
                    </tr>
                    <tr>
                        <th>Fecha nacimiento maxima</th>
                        <td>
                            <p:calendar id="fechaMaxima" value="#{gestionarUsuariosBean.fechaNacimientoSuperior}"
                                    locale="es" navigator="true" pattern="dd/MM/yyyy" yearRange="-100:+0" showOn="button" />
                        </td>
                        <td><p:message for="fechaMaxima" /></td>
                    </tr>
                    <tr>
                        <th></th>
                        <td>
                            <p:commandButton 
                                value="Buscar" 
                                actionListener="#{gestionarUsuariosBean.buscar()}"
                                process="filtroPanel"
                                update="usuarioTable filtroPanel"
                                onclick="usuarioTableWV.getPaginator().setPage(0);" />
                        </td>
                    </tr>
                </table>
            </p:outputPanel>

            <h3>Lista de personas</h3>
            
            <p:dataTable id="usuarioTable" var="u" value="#{gestionarUsuariosBean.usuarioLazyDataModel}" paginatorAlwaysVisible="false"
                 paginatorTemplate="{FirstPageLink} {PreviousPageLink} {PageLinks} {NextPageLink} {LastPageLink}"
                 paginatorPosition="bottom" lazy="true" paginator="true" rows="#{gestionarUsuariosBean.filasPorPagina}"
                 widgetVar="usuarioTableWV"
                 emptyMessage="No se encontraron usuarios">
            
                <p:column headerText="RUT">
                    <h:outputText value="#{u.rut}" >
                        <f:converter converterId="rutConverter" />
                    </h:outputText>
                </p:column>

                <p:column headerText="NOMBRE">
                    <h:outputText value="#{u.nombres}" />
                </p:column>
                
                <p:column headerText="APELLIDO">
                    <h:outputText value="#{u.apellidos}" />
                </p:column>

                <p:column headerText="F. NACIMIENTO">
                    <h:outputText value="#{u.fechaNacimiento}" >
                        <f:convertDateTime parent="dd/MM/yyyy" />
                    </h:outputText>
                </p:column>

                <p:column headerText="EMAIL">
                    <h:outputText value="#{u.email}" />
                </p:column>
                
                <p:column headerText="PERFIL">
                    <h:outputText value="#{u.perfil.nombre}" />
                </p:column>
                
                <p:column headerText="HAB.">
                    <h:outputText value="#{u.habilitado == true ? 'Sí' : 'No'}" />
                </p:column>
                
                <p:column headerText="ACCIONES">
                    <p:commandLink title="editar" 
                           styleClass="ui-icon ui-icon-pencil"
                           ajax="false" 
                           action="#{gestionarUsuariosBean.irEditar(u)}" 
                           immediate="true" /> 
                    
                    <p:commandLink title="eliminar"
                                   styleClass="ui-icon ui-icon-trash"
                                   type="button"
                                   actionListener="#{gestionarUsuariosBean.seleccionar(u)}"
                                   process="@this" update="@this"
                                   onclick="confirmEliminar.show();"/> 
                    
                    <p:commandLink title="habilitar" 
                            styleClass="ui-icon ui-icon-play"
                            type="button"
                            actionListener="#{gestionarUsuariosBean.seleccionar(u)}"
                            process="@this" update="@this"
                            onclick="confirmHabilitar.show();"
                            rendered="#{!u.habilitado}" /> 
                    
                    <p:commandLink title="deshabilitar" 
                           styleClass="ui-icon ui-icon-stop"
                           type="button"
                           actionListener="#{gestionarUsuariosBean.seleccionar(u)}"
                           process="@this" update="@this"
                           onclick="confirmaDeshabilitar.show();"
                           rendered="#{u.habilitado}" />
                </p:column>

            </p:dataTable>
            
            <div class="botonera">
                
                <p:commandButton value="Nuevo Usuario" 
                           ajax="false" 
                           action="#{gestionarUsuariosBean.irEditar(null)}" 
                           immediate="true" />
                
                <p:commandButton value="Salir modulo" action="salir" immediate="true" ajax="true" />
            </div>

            <p:confirmDialog widgetVar="confirmEliminar" header="Eliminar Usuario"  message="¿Esta seguro que desea eliminar el usuario?"  >  
                <p:commandButton value="Si" 
                                process="@this"
                                update="usuarioTable"
                                actionListener="#{gestionarUsuariosBean.eliminar()}" 
                                styleClass="ui-confirmdialog-yes" 
                                icon="ui-icon-check" 
                                oncomplete="confirmEliminar.hide();"/>  
                <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" 
                                 onclick="confirmEliminar.hide();" />       
            </p:confirmDialog>  
            
            <p:confirmDialog widgetVar="confirmHabilitar" header="Habilitar Usuario"  message="¿Esta seguro que desea habilitar al usuario?"  >  
                <p:commandButton value="Si" 
                                process="@this"
                                update="usuarioTable"
                                actionListener="#{gestionarUsuariosBean.habilitar()}" 
                                styleClass="ui-confirmdialog-yes" 
                                icon="ui-icon-check" 
                                oncomplete="confirmHabilitar.hide();"/>  
                <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" 
                                 onclick="confirmHabilitar.hide();" />       
            </p:confirmDialog>  
            
            
            <p:confirmDialog widgetVar="confirmaDeshabilitar" header="Deshabilitar Usuario"  message="¿Esta seguro que desea deshabilitar al usuario?"  >  
                <p:commandButton value="Sí" 
                                process="@this"
                                update="usuarioTable"
                                actionListener="#{gestionarUsuariosBean.deshabilitar()}" 
                                styleClass="ui-confirmdialog-yes" 
                                icon="ui-icon-check" 
                                oncomplete="confirmaDeshabilitar.hide();"/>  
                <p:commandButton value="No" type="button" styleClass="ui-confirmdialog-no" icon="ui-icon-close" 
                                 onclick="confirmaDeshabilitar.hide();" />       
            </p:confirmDialog>  
            
            
            
        </h:form>

    </ui:define>
</ui:composition>
